package com.waymap.service;

import com.waymap.domain.Accounts;
import com.waymap.domain.Transactions;
import com.waymap.domain.User;

import org.springframework.http.ResponseEntity;

import java.util.List;
import java.util.Map;

public interface TransactionsService {

    /**
     * @return
     * @author vincent mai
     * 查询单号列表
     */
    List<Map<String, Object>> getTranidList(Map<String, Object> param);
    List<Map<String, Object>> searchICItem(Map<String, Object> param);
    Map<String, Object> getTranidStatus(String tranid, String accountId);


    /**
     * @param request
     * @return
     * @author vincent mai
     * @param currentUser 
     */
    ResponseEntity<Map> submitTransaction(Map request, User currentUser);

    ResponseEntity<Map> submitNoIRTNumber(Map request);

    ResponseEntity<Map> submitTrackingNumber(Map request);

    ResponseEntity<Map> submitToShippingMark(Map request);

    ResponseEntity<Map> creatInventoryAdjustment(Map request);

    /**
     * @param param
     * @return
     * @author vincent mai
     */
    ResponseEntity<Map> getWaves(Map<String, Object> param);

    /**
     * 获取账户信息
     * @param param
     * @return
     */
    Accounts getAccountInfo(Map<String, Object> param);

    /**
     * 更新syncToNs状态
     * @param tranid
     */
    void updateStatusByTranid(Map<String, Object> param);

    void updateUserByTranid(Map<String, Object> param);

    void updateStatusByError(Map<String, Object> param);



    Map<String,Object> processTransation(String tranid, String transactionType, String orderNumber, String location, String accountId, String entry);

    Map<String, Object> selectToWaveList(String tranid,String transactionType,String accountId);

    Map<String, Object> selectSTList(String tranid,String orderNumber,String accountId);

    Map<String, Object> selectWavePickUp(String tranid,String pickup,String accountId, int location);

    Map<String, Object> getShippingCarrier(String trackingNumber,String accountId);

	Map<String, Object> getTxSubmitDetail(String tranid, String transactionType, String accountId);

    Map<String, Object> getTxSubmitDetail2(String tranid, String transactionType, String accountId);

    List<Transactions> searchErrorTransactions(Map<String, Object> param);
}
